/*
 * @Author: Jae Frank[thissfk@qq.com]
 * @Date: 2024-02
 * @LastEditors: Jae Frank[thissfk@qq.com]
 * @LastEditTime: 2024-05
 * @FilePath: main_cm7_0.c
 * @Description:
 *            If you need more information,
 * please contact Jae Frank[thissfk@qq.com] to get an access.
 * Copyright (c) 2024 by Jae Frank, All Rights Reserved.
 */
/*
 *                        _oo0oo_
 *                       o8888888o
 *                       88" . "88
 *                       (| -_- |)
 *                       0\  =  /0
 *                     ___/`---'\___
 *                   .' \\|     |// '.
 *                  / \\|||  :  |||// \
 *                 / _||||| -:- |||||- \
 *                |   | \\\  - /// |   |
 *                | \_|  ''\---/''  |_/ |
 *                \  .-\__  '-'  ___/-. /
 *              ___'. .'  /--.--\  `. .'___
 *           ."" '<  `.___\_<|>_/___.' >' "".
 *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *          \  \ `_.   \_ __\ /__ _/   .-` /  /
 *      =====`-.____`.___ \_____/___.-`___.-'=====
 *                        `=---='
 *
 *
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 *            佛祖保佑     永不宕机     永无BUG
 */
#include "CPP/tst.h"
#include "Module/MPU6050/mpu6050.h"
#include "Module/PS2/ps2.h"
#include "Module/Servo/servo.h"
#include "System/usr_system.hpp"
#include "cmsis_os.h"
#include "zf_common_headfile.h"
// **************************** 代码区域 ****************************

int main(void) {
  clock_init(SYSTEM_CLOCK_250M); // 时钟配置及系统初始化<务必保留>
  debug_init();                  // 调试串口信息初始化
  //
  //  timer_init(TC_TIME2_CH1, TIMER_MS); // 初始化定时器，用于按键控制
  //  timer_start(TC_TIME2_CH1);          // 开启定时器，用于按键控制

  // gpio_init(RUN_LED, GPO, 0, GPO_PUSH_PULL);
  // gpio_init(ERR_LED, GPO, 0, GPO_PUSH_PULL);
  // gpio_init(EN_LED, GPO, 0, GPO_PUSH_PULL);

  osKernelInitialize(); // 初始化FreeRTOS内核
  usrSystemInit();      // 初始化系统
  osKernelStart();      // 开启FreeRTOS内核调度

  // 此处编写用户代码 例如外设初始化代码等
  while (true) {
    /*假如FreeRTOS调度成功，那么不会运行这里面的代码*/
  }
}

// **************************** 代码区域 ****************************

/**
 * @brief 无线串口输出函数
 *
 * @param argument
 */
void printfTask(void *argument) {
  /* USER CODE BEGIN */
  TickType_t xLastWakeTime;
  const TickType_t xFrequency = 1000;
  xLastWakeTime = xTaskGetTickCount();
  /* Infinite loop */
  for (;;) {
    //    printf("fk:%d\r\n", xFrequency);
    vTaskDelayUntil(&xLastWakeTime, xFrequency);
  }
  /* USER CODE END */
}
